Action過濾器是ASP.NET MVC提供輔助開發者值行一些邏輯上的處理,例如用戶權限驗證、系統日誌等;
Action Filter可附加在Controller Action或Controller裡所有的Action上的屬性標籤
Authorization Filters是用於Action執行前進行判斷,是所有Filter裡最早被執行的,主要用於身分驗證或權限檢查,在此階段達到安全性的防護
[Authorize]//需要登入才能使用此Action
public ActionResult Index(){...}
[Authorize]//附加在Controller上會讓Controller內所有Action都套用Filter的效果
public class HomeController : Controller{..}
[Authorize user="admin"]//限定只有使用者名稱為admin才能使用此Action
public ActionResult ManageUser(){...}
Action Filters是於Action執行前後進行額外處理,通常用在產生log檔或cache
1.AsyncTimeoutAttribute
用來設定非同步Action方法的逾期時間,預設為45秒
2.NoAsyncTimeoutAttribute
讓非同步Action沒有逾期的時間限制
Result Filters是於Action還未回傳至Client端前所執行的一些邏輯判斷,或是修改輸出結果
[OutputCache(Duration=30)]//為此Action進行暫存30秒
public ActionResult Output(){...}
Exception Filters用於執行階段發生例外,用來替例外進行處理,通常用於記錄錯誤或重新導向錯誤檢視;
ASP.NET MVC已把Exception Filters註冊成全域的Filters,所以不需在Action再套用;
//Exception Filters檔案路徑:~/App_Start/FilterConfig.cs
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}